home *** CD-ROM | disk | FTP | other *** search
Wrap
import java.applet.Applet; import java.awt.Color; import java.awt.Component; import java.awt.Dimension; import java.awt.Event; import java.awt.FontMetrics; import java.awt.Graphics; import java.awt.Image; import java.awt.MediaTracker; import java.awt.Rectangle; import java.net.MalformedURLException; import java.net.URL; import java.util.StringTokenizer; import java.util.Vector; public final class ET_ImageMenu extends Applet implements Runnable { static final boolean REG_VERSION = false; // $FF: renamed from: RT java.lang.String static final String field_0 = "(This applet is not for commercial use. Visit http://www.entanke.se/ for information and more applets.)"; static final String APPLETINFO = "ET Image Menu v1.1. Visit http://www.entanke.se/ for information and more applets."; Image offScreenImage; Dimension offScreenSize; Graphics offScreenGraphics; Graphics appletGraphics; private Thread kicker; static final int S_NORMAL = 0; static final int S_OVER = 1; static final int S_CLICK = 2; static final int DEF_BGCOLOR = 16777215; static final Rectangle DEF_AREA = null; static final URL DEF_URL = null; static final String DEF_TARGETFRAME = "_self"; static final String DEF_ALT = null; static final URL DEF_IMAGE = null; static final URL DEF_CLICKIMAGE = null; static final URL DEF_OVERIMAGE = null; static final String DEF_BEHAVIOUR = "Normal"; Vector parArea = new Vector(); Vector parURL = new Vector(); Vector parTargetFrame = new Vector(); Vector parALT = new Vector(); URL parImage; URL parOverImage; URL parClickImage; Integer parBGColor; String parBehaviour; Vector areaGraphics = new Vector(); Image normalImage; Image overImage; Image clickImage; Color BGColor; static final int OVER_NONE = -1; static final int MOUSE_UP = 0; static final int MOUSE_DOWN = 1; int statLastOver = -1; int statLastMouse = 0; int statLastPushed = -1; boolean parStayPushed = false; public void init() { Dimension var1 = ((Component)this).size(); this.offScreenImage = ((Component)this).createImage(var1.width, var1.height); this.offScreenSize = var1; this.offScreenGraphics = this.offScreenImage.getGraphics(); this.appletGraphics = ((Component)this).getGraphics(); this.parBGColor = this.getIntegerParameter("BGColor", new Integer(16777215), 16); this.BGColor = new Color(this.parBGColor); this.parImage = this.getURLParameter("Image", (URL)null); this.parOverImage = this.getURLParameter("OverImage", (URL)null); this.parClickImage = this.getURLParameter("ClickImage", (URL)null); this.parBehaviour = this.getStringParameter("Behaviour", "Normal"); this.parStayPushed = this.parBehaviour.equalsIgnoreCase("StayPushed"); boolean var2 = true; for(int var3 = 1; var2; ++var3) { if (var3 == 1) { this.parArea.addElement(this.getAreaParameter("Area1", (Rectangle)null)); this.parURL.addElement(this.getURLParameter("URL1", (URL)null)); this.parTargetFrame.addElement(this.getStringParameter("TargetFrame1", "_self")); this.parALT.addElement(this.getStringParameter("ALT1", (String)null)); } else if (this.getStringParameter("Area" + var3, (String)null) != null) { this.parArea.addElement(this.getAreaParameter("Area" + var3, (Rectangle)null)); this.parURL.addElement(this.getURLParameter("URL" + var3, (URL)null)); this.parTargetFrame.addElement(this.getStringParameter("TargetFrame" + var3, (String)this.parTargetFrame.elementAt(var3 - 2))); this.parALT.addElement(this.getStringParameter("ALT" + var3, (String)null)); } else { var2 = false; } } this.offScreenGraphics.setColor(this.BGColor); this.offScreenGraphics.fillRect(0, 0, this.offScreenSize.width, this.offScreenSize.height); FontMetrics var4 = this.offScreenGraphics.getFontMetrics(this.offScreenGraphics.getFont()); this.offScreenGraphics.setColor(Color.gray); this.offScreenGraphics.drawString("(loading)", (((Component)this).size().width - var4.stringWidth("(loading)")) / 2, ((Component)this).size().height / 2); for(int var5 = 0; var5 < this.parArea.size(); ++var5) { if (this.parArea.elementAt(var5) == null) { this.areaGraphics.addElement((Object)null); } else { Rectangle var6 = (Rectangle)this.parArea.elementAt(var5); this.areaGraphics.addElement(this.offScreenGraphics.create(var6.x, var6.y, var6.width, var6.height)); } } } private Integer getIntegerParameter(String var1, int var2, int var3) { return this.getIntegerParameter(var1, new Integer(var2), var3); } private Integer getIntegerParameter(String var1, Integer var2, int var3) { String var4 = ((Applet)this).getParameter(var1); try { Integer var5 = new Integer(Integer.parseInt(var4, var3)); return var5; } catch (NumberFormatException var6) { return var2; } } private String getStringParameter(String var1, String var2) { String var3 = ((Applet)this).getParameter(var1); return var3 == null ? var2 : var3; } private URL getURLParameter(String var1, URL var2) { String var3 = this.getStringParameter(var1, (String)null); try { URL var4 = new URL(((Applet)this).getDocumentBase(), var3); return var4; } catch (MalformedURLException var5) { return var2; } } private Rectangle getAreaParameter(String var1, Rectangle var2) { String var3 = this.getStringParameter(var1, (String)null); if (var3 == null) { return var2; } else { StringTokenizer var4 = new StringTokenizer(var3); return new Rectangle(Integer.parseInt(var4.nextToken()), Integer.parseInt(var4.nextToken()), Integer.parseInt(var4.nextToken()), Integer.parseInt(var4.nextToken())); } } public String getAppletInfo() { return "ET Image Menu v1.1. Visit http://www.entanke.se/ for information and more applets."; } public final void update(Graphics var1) { var1.drawImage(this.offScreenImage, 0, 0, this); } public final void paint(Graphics var1) { var1.drawImage(this.offScreenImage, 0, 0, this); } public void start() { if (this.kicker == null) { this.kicker = new Thread(this, "ImageMenu"); this.kicker.start(); } ((Applet)this).showStatus("ET Image Menu v1.1. Visit http://www.entanke.se/ for information and more applets."); } public void stop() { if (this.kicker != null && this.kicker.isAlive()) { this.kicker.stop(); } this.kicker = null; } private Image getImageAndWait(URL var1) { if (var1 != null) { Image var2 = ((Applet)this).getImage(var1); if (var2 != null) { MediaTracker var3 = new MediaTracker(this); var3.addImage(var2, 1); try { var3.waitForID(1); } catch (InterruptedException var4) { } } return var2; } else { return null; } } public void run() { this.normalImage = this.getImageAndWait(this.parImage); this.offScreenGraphics.setColor(this.BGColor); this.offScreenGraphics.fillRect(0, 0, this.offScreenSize.width, this.offScreenSize.height); this.offScreenGraphics.drawImage(this.normalImage, 0, 0, this); Graphics var1 = this.appletGraphics; var1.drawImage(this.offScreenImage, 0, 0, this); this.overImage = this.getImageAndWait(this.parOverImage); this.clickImage = this.getImageAndWait(this.parClickImage); while(this.parStayPushed) { URL var4 = ET_MenuHelper.recive(); for(int var2 = 0; var2 < this.parArea.size(); ++var2) { try { if (((URL)this.parURL.elementAt(var2)).sameFile(var4)) { this.updateMenu(var2, 0); this.updateMenu(var2, 1); this.updateMenu(var2, 0); } } catch (NullPointerException var3) { } } this.delay(200); } } private final void updateMenu(int var1, int var2) { if (this.statLastOver != var1) { if (var1 != -1 && this.parALT.elementAt(var1) != null) { ((Applet)this).showStatus((String)this.parALT.elementAt(var1) + " " + "(This applet is not for commercial use. Visit http://www.entanke.se/ for information and more applets.)"); } else { ((Applet)this).showStatus("(This applet is not for commercial use. Visit http://www.entanke.se/ for information and more applets.)"); } } if (this.statLastOver != var1) { if (this.statLastMouse == 1) { if (!this.parStayPushed) { this.drawImage(this.statLastPushed, 0, this.offScreenGraphics); this.drawImage(this.statLastPushed, 2, this.offScreenGraphics); } } else { if (!this.parStayPushed || var1 != this.statLastPushed) { this.drawImage(var1, 1, this.offScreenGraphics); } if (!this.parStayPushed || this.statLastOver != this.statLastPushed) { this.drawImage(this.statLastOver, 0, this.offScreenGraphics); } this.statLastOver = var1; } if (this.parStayPushed) { this.statLastOver = var1; } Graphics var3 = this.appletGraphics; var3.drawImage(this.offScreenImage, 0, 0, this); } if (this.statLastMouse != var2) { if (var2 == 1) { if (var1 != -1) { this.drawImage(this.statLastPushed, 0, this.offScreenGraphics); this.statLastPushed = var1; } this.drawImage(var1, 2, this.offScreenGraphics); } else { if (!this.parStayPushed || var1 != this.statLastPushed) { this.drawImage(var1, 1, this.offScreenGraphics); } if (!this.parStayPushed && var1 != this.statLastPushed) { this.drawImage(this.statLastPushed, 0, this.offScreenGraphics); } } this.statLastMouse = var2; Graphics var4 = this.appletGraphics; var4.drawImage(this.offScreenImage, 0, 0, this); } } public boolean handleEvent(Event var1) { switch (var1.id) { case 501: this.updateMenu(this.statLastOver, 1); return true; case 502: this.updateMenu(this.statLastOver, 0); if (this.statLastOver == this.statLastPushed && this.statLastOver != -1 && (URL)this.parURL.elementAt(this.statLastOver) != null) { ((Applet)this).getAppletContext().showDocument((URL)this.parURL.elementAt(this.statLastOver), (String)this.parTargetFrame.elementAt(this.statLastOver)); } return true; case 503: case 506: this.updateMenu(this.getMouseOver(var1.x, var1.y), this.statLastMouse); return true; case 504: default: return super.handleEvent(var1); case 505: this.updateMenu(-1, 0); ((Applet)this).showStatus(""); return true; } } private int getMouseOver(int var1, int var2) { int var3 = -1; for(int var4 = 0; var4 < this.parArea.size(); ++var4) { if (((Rectangle)this.parArea.elementAt(var4)).inside(var1, var2)) { var3 = var4; } } return var3; } private void drawImage(int var1, int var2, Graphics var3) { if (var1 != -1) { Rectangle var4 = (Rectangle)this.parArea.elementAt(var1); try { switch (var2) { case 0: ((Graphics)this.areaGraphics.elementAt(var1)).drawImage(this.normalImage, -var4.x, -var4.y, this); return; case 1: ((Graphics)this.areaGraphics.elementAt(var1)).drawImage(this.overImage, -var4.x, -var4.y, this); return; case 2: ((Graphics)this.areaGraphics.elementAt(var1)).drawImage(this.clickImage, -var4.x, -var4.y, this); return; } } catch (NullPointerException var5) { return; } } } private void delay(int var1) { try { Thread.sleep((long)var1); } catch (InterruptedException var2) { } } }